﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ServiceModel.Channels;
using System.ComponentModel;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EstabelecimentoWS;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.DebitoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.UtilidadesWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.TokenWs;


namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class EstabelecimentoDebitarBebidaClientePasso3 : System.Web.UI.Page
    {
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        PubClub_Estabelecimento_WS webServiceEstabelecimento = new PubClub_Estabelecimento_WS();
        Utilizadades_WS webServiceUtilidades = new Utilizadades_WS();
        PubClub_Debito_WS webServiceDebito = new PubClub_Debito_WS();
        PubClub_Token_WS webServiceToken = new PubClub_Token_WS();

        ObjetoCliente cliente = new ObjetoCliente();
        ObjetoEstabelecimento estabelecimento = new ObjetoEstabelecimento();
        ObjetoRetornoToken retornoWebServicetoken;
        ObjetoRetornoDebito retornoWebServiceDebito;
        ObjetoRetornoDebito retornoWebServiceDebitoRealizarDebito;
        string numeroToken;
        int idDebito;

        TableHeaderRow linha = new TableHeaderRow();

        TableHeaderCell celulaNome = new TableHeaderCell();
        Label textoNome = new Label();

        TableHeaderCell celulaValorDose = new TableHeaderCell();
        Label textoValorDose = new Label();

        TableHeaderCell celulaQtde = new TableHeaderCell();
        Label textoQtde = new Label();

        TableHeaderCell celulaSubTotal = new TableHeaderCell();
        Label textoSubTotal = new Label();

        TableHeaderCell celulaAcao = new TableHeaderCell();
        Label textoAcao = new Label();

        String carrinho;
        String[] listaCarrinho;
        string bebidaId = "";
        string qtd = "";
        double total = new double();
        string qtde2 = "";
        string listadeBebidas = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Estabelecimento"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }
            else
            {
                estabelecimento = webServiceEstabelecimento.GetEstabelecimento(Convert.ToInt32(Session["Estabelecimento"]));
            }

            if (Request.QueryString["ClienteId"] != null)
            {
                int idCliente = Convert.ToInt32(Request.QueryString["ClienteId"]);
                cliente = webServiceCliente.GetCliente(idCliente);
            }


            LabelNomeCliente.Text = cliente.Nome.ToUpper();
            LabelNomeCliente.ForeColor = System.Drawing.Color.Blue;

            HyperLinkVoltar.NavigateUrl = "~/GUI/EstabelecimentoDebitarBebidaClientePasso2.aspx?ClienteId=" + cliente.ClienteId;

            labelAviso.Visible = false;

            if (Session["carrinho"].Equals(""))
            {
                labelAviso.Text = "Você não adicionou nenhum item. Seu carrinho está vazio no momento";
                labelAviso.Visible = true;
                ButtonFinalizarPedido.Enabled = false;
                buttonCancelar.Enabled = false;
                return;
            }
            else
            {
                textoNome.Text = "Bebida";
                celulaNome.Controls.Add(textoNome);
                linha.Cells.Add(celulaNome);

                textoValorDose.Text = "Valor da dose";
                celulaValorDose.Controls.Add(textoValorDose);
                linha.Cells.Add(celulaValorDose);

                textoQtde.Text = "Quantidade de doses";
                celulaQtde.Controls.Add(textoQtde);
                linha.Cells.Add(celulaQtde);

                textoSubTotal.Text = "Subtotal";
                celulaSubTotal.Controls.Add(textoSubTotal);
                linha.Cells.Add(celulaSubTotal);

                textoAcao.Text = "Ação";
                celulaAcao.Controls.Add(textoAcao);
                linha.Cells.Add(celulaAcao);

                tabelaCarrinho.Rows.Add(linha);


                if (Request.QueryString["Excluir"] != null)
                {
                    carrinho = Session["carrinho"].ToString().Replace(Request.QueryString["Excluir"].ToString() + ',', "");

                    listaCarrinho = carrinho.Split(',');

                    Session["carrinho"] = carrinho;

                    labelAviso.Text = "Item excluido com sucesso.";
                    labelAviso.ForeColor = System.Drawing.Color.Green;
                    labelAviso.Visible = true;
                }
                else
                {

                    carrinho = Session["carrinho"].ToString();

                    listaCarrinho = carrinho.Split(',');
                }


                for (int i = 0; i < listaCarrinho.Count() - 1; i++)
                {
                    TableRow linha2 = new TableRow();
                    if (i % 2 != 0)
                    {
                        linha2.CssClass = "odd";
                    }

                    TableCell celulaNome2 = new TableCell();
                    Label textoNome2 = new Label();

                    TableCell celulaValorDose2 = new TableCell();
                    Label textoValorDose2 = new Label();

                    TableCell celulaQtde2 = new TableCell();
                    Label textoQtde2 = new Label();

                    TableCell celulaSubTotal2 = new TableCell();
                    Label textoSubTotal2 = new Label();

                    TableCell celulaAcao2 = new TableCell();

                    double subTotal = new double();

                    bebidaId = listaCarrinho[i].Substring(0, listaCarrinho[i].IndexOf("-"));
                    qtd = listaCarrinho[i].Substring(listaCarrinho[i].IndexOf("-") + 1, (listaCarrinho[i].Length - 1) - listaCarrinho[i].IndexOf("-"));

                    listadeBebidas += bebidaId.ToString() + "-" + qtd + ",";

                    textoNome2.Text = webServiceUtilidades.GetBebidaById(Convert.ToInt32(bebidaId)).Descricao;

                    celulaNome2.Controls.Add(textoNome2);
                    linha2.Cells.Add(celulaNome2);

                    textoValorDose2.Text = "R$ " + webServiceUtilidades.GetBebidaById(Convert.ToInt32(bebidaId)).Valor.ToString("N2");
                    celulaValorDose2.Controls.Add(textoValorDose2);
                    linha2.Cells.Add(celulaValorDose2);

                    textoQtde2.Text = qtd;
                    celulaQtde2.Controls.Add(textoQtde2);
                    linha2.Cells.Add(celulaQtde2);

                    subTotal = Convert.ToDouble(webServiceUtilidades.GetBebidaById(Convert.ToInt32(bebidaId)).Valor.ToString("N2")) * Convert.ToDouble(textoQtde2.Text);

                    textoSubTotal2.Text = "R$ " + subTotal.ToString("N2");
                    celulaSubTotal2.Controls.Add(textoSubTotal2);
                    linha2.Cells.Add(celulaSubTotal2);

                    ImageButton imageButtonLixeira = new ImageButton();
                    imageButtonLixeira.ImageUrl = "../Imagens/IconeInativar.png";
                    imageButtonLixeira.OnClientClick = "confirm('Deseja remover a bebida?')";
                    imageButtonLixeira.PostBackUrl = "EstabelecimentoDebitarBebidaClientePasso3.aspx?excluir=" + listaCarrinho[i] + "&" + "ClienteId=" + cliente.ClienteId;
                    imageButtonLixeira.ToolTip = "Remover item.";
                    celulaAcao2.Controls.Add(imageButtonLixeira);
                    linha2.Cells.Add(celulaAcao2);

                    tabelaCarrinho.Rows.Add(linha2);

                    total += subTotal;


                    labelTotal.Text = "Total: R$ " + total.ToString("N2");

                }

                if (carrinho.Equals(""))
                {
                    tabelaCarrinho.Visible = false;
                    total = 0;
                    labelTotal.Visible = false;
                    labelAviso.Text = "Todos os itens foram excluidos.";
                    labelAviso.Visible = true;
                    ButtonFinalizarPedido.Visible = false;
                    buttonCancelar.Visible = false;
                    return;
                }
                else
                {
                    tabelaCarrinho.Visible = true;
                }
            }

        }

        protected void buttonLimparItens_Click(object sender, EventArgs e)
        {
            Session["carrinho"] = "";

            ButtonFinalizarPedido.Enabled = false;
            buttonCancelar.Enabled = false;

        }

        protected void ButtonFinalizarPedido_Click(object sender, EventArgs e)
        {

            LabelInformarTaken.Visible = true;
            TextBoxToken.Visible = true;
            ButtonConfirmarPedido.Visible = true;
            retornoWebServiceDebitoRealizarDebito = webServiceDebito.RealizarDebito(cliente.ClienteId, estabelecimento.EstabelecimentoId, listadeBebidas);
            if (retornoWebServiceDebitoRealizarDebito.Sucesso == false)
            {
                labelAviso.Text = retornoWebServiceDebitoRealizarDebito.Menssagem;
                labelAviso.ForeColor = System.Drawing.Color.Red;
                labelAviso.Visible = true;
            }
            else
            {
                Session["idDebito"] = retornoWebServiceDebitoRealizarDebito.DebitoId;
            }
        }

        protected void ButtonConfirmarPedido_Click(object sender, EventArgs e)
        {

            if (Session["idDebito"] != null)
            {
                idDebito = Convert.ToInt32(Session["idDebito"]);
            }
            retornoWebServiceDebito = webServiceDebito.ConfirmarDebito(TextBoxToken.Text, idDebito, cliente.ClienteId, estabelecimento.EstabelecimentoId);
            if (retornoWebServiceDebito.Sucesso == true)
            {
                Response.Redirect("EstabelecimentoDebitarBebidaCliente.aspx?Sucesso=1");

            }
            else
            {
                labelAviso.Text = retornoWebServiceDebito.Menssagem;
                labelAviso.ForeColor = System.Drawing.Color.Red;
                labelAviso.Visible = true;

            }

        }

        protected void buttonCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/GUI/HomeEstabelecimento.aspx");
        }


    }
}